package com.bh.extend.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.bh.common.core.domain.AjaxResult;
import com.bh.extend.domain.JcOrderBarcode;
import com.bh.extend.vo.JcOrderBarcodeImportVo;
import com.bh.extend.vo.JcOrderBarcodePrintVo;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 条码与商品对应Service接口
 *
 * @author slx
 * @date 2023-03-27
 */
public interface IJcOrderBarcodeService extends IService<JcOrderBarcode> {
    /**
     * 查询条码与商品对应
     *
     * @param productCode 条码与商品对应主键
     * @return 条码与商品对应
     */
    public JcOrderBarcode selectJcOrderBarcodeByProductCode(String productCode);


    /**
     * 查询条码与商品对应列表
     * @param orderId
     * @return
     */
    public List<JcOrderBarcode> selectJcOrderBarcodeListByOrderId(Long orderId);

    /**
     * 查询条码与商品对应列表
     * @param orderId
     * @return
     */
    public List<JcOrderBarcodePrintVo> selectJcOrderBarcodePrintVoListByOrderId(Long orderId);


    /**
     * 查询连续条码与商品对应列表
     *
     * @return 条码与商品对应集合
     */
    public List<JcOrderBarcode> selectJcOrderBarcode(Long ledOrderId, String start, String end);

    /**
     * 查询条码与商品对应列表
     *
     * @param jcOrderBarcode 条码与商品对应
     * @return 条码与商品对应集合
     */
    public List<JcOrderBarcode> selectJcOrderBarcodeList(JcOrderBarcode jcOrderBarcode);


    /**
     * 查询条码与商品对应列表
     * @param shipmentId
     * @return
     */
    public List<JcOrderBarcode> selectJcOrderUnloadList(JcOrderBarcode jcOrderBarcode);

    /**
     * 查询条码与商品对应列表
     *
     * @param jcOrderBarcode 条码与商品对应
     * @return 条码与商品对应集合
     */
    public AjaxResult exportPdf(JcOrderBarcode jcOrderBarcode);

    /**
     * 查询条码与商品对应列表
     *
     * @param jcOrderBarcode 条码与商品对应
     * @return 条码与商品对应集合
     */
    public void printPdf(HttpServletResponse response, JcOrderBarcode jcOrderBarcode);

    /**
     * 新增条码与商品对应
     *
     * @param jcOrderBarcode 条码与商品对应
     * @return 结果
     */
    public int insertJcOrderBarcode(JcOrderBarcode jcOrderBarcode);

    /**
     * 新增条码与商品对应
     *
     * @param jcOrderBarcodes 条码与商品对应
     * @return 结果
     */
    public int batchInsertJcOrderBarcode(List<JcOrderBarcode> jcOrderBarcodes);

    /**
     * 修改条码与商品对应
     *
     * @param jcOrderBarcode 条码与商品对应
     * @return 结果
     */
    public int updateJcOrderBarcode(JcOrderBarcode jcOrderBarcode);

    /**
     * 移除装载状态
     *
     * @param productCode
     * @return
     */
    public int removeJcOrderBarcodePack(String productCode);

    /**
     * 移除装载状态
     *
     * @param productCode
     * @return
     */
    public int removeJcOrderBarcodeSend(String productCode);

    /**
     * 批量删除条码与商品对应
     *
     * @param productCodes 需要删除的条码与商品对应主键集合
     * @return 结果
     */
    public int deleteJcOrderBarcodeByProductCodes(String[] productCodes);

    /**
     * 删除条码与商品对应信息
     *
     * @param productCode 条码与商品对应主键
     * @return 结果
     */
    public int deleteJcOrderBarcodeByProductCode(String productCode);

    /**
     * 导入用户数据
     *
     * @param userList 用户数据列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @param operName 操作用户
     * @return 结果
     */
    public String importCode(List<JcOrderBarcodeImportVo> userList, Boolean isUpdateSupport, String operName);


    /**
     * 查询运单的某一个站点卸货未完成的分段订单ID
     * @param shipmentId
     * @return
     */
    public List<String> selectNoUnloadLedIdsByShipmentIdAndOrgId(Long shipmentId, Long orgId);
}
